<?php
require '../utiles.php';


/* 

CONFIGURACION

*/

//Archivo donde se leerán los patrones
$archivo = 'csv/or.csv';
//Cantidad de entradas de la neurona
$num_entradas = 2; 

//Criterio de finalización 
// El criterio será al alcanzar el error cuadrático medio
// o al finalizar el número de épocas.
$error_minimo = 0.01;
$epocas = 200;

//Tasa de Aprendizaje
$tasa_aprendizaje = 0.02;

//Generación aleatoria de puntos
$n_puntos = 500;
$desvio = 0.15;

$item = '';
if (isset($_GET['item']))
	$item = $_GET['item'];

switch ($item) {
	case '1':
		//Leemos el archivo en un array 
		$patrones = read_csv($archivo);
		//Desviamos los puntos
		$patrones = desviar_patron($patrones, $desvio, $n_puntos);
		
		$n = count($patrones);
		$salida = array();
		$clase1 = $clase2 = array();
		for ($i = 0; $i < $n ; $i++) {
			if ($patrones[$i][$num_entradas] == 1) {
				unset($patrones[$i][$num_entradas]);
				$clase1['data'][] = $patrones[$i];
			} else {
				unset($patrones[$i][$num_entradas]);
				$clase2['data'][] = $patrones[$i];
			}
		}
		$clase1['label'] = 'Conjunto Verdadero';
		$clase1['color'] = 'green';
		$clase1['points']['show'] = 'true';
		$clase2['label'] = 'Conjunto Falso';
		$clase2['color'] = 'red';
		$clase2['points']['show'] = 'true';
		$clase2['points']['symbol'] = 'cross';
		$salida = array($clase1, $clase2);
		echo json_encode($salida);		
		
	break;
    case '2':
		require 'lib/Neurona.php';
		$datos = $_POST;
		$neurona = new Neurona;
		$neurona->__constructor($datos);
		
		//$patrones = desviar_patron(read_csv($archivo), $desvio, $n_puntos);
		$patrones = read_csv($archivo);

		$n = count($patrones);
		$entradas = $salidas = array();
		for ($i = 0; $i < $n ; $i++) {
			$fila = array();
			for ($j = 0 ; $j < $datos['cantEntradas']; $j++)
				$fila[] = $patrones[$i][$j];
			$entradas[] = $fila;
			$salidas[] = $patrones[$i][$datos['cantEntradas']];
		}
		$returnW = array();
		$returnW = $neurona -> entrenar_N($entradas, $salidas, $datos['epocas'] , 0.00025, 5);
	//	echo count($returnW); die;
		echo json_encode($returnW);
    break;
			
	default:
		# code...
	break;
}


/* 

    var data = [ { data: d1 , label: "Conjunto verdadero", color: "GREEN", points: { show: true }}, { data: d2 , label: "Conjunto falso", color: "RED", points: { show: true, symbol: "cross"}}  ];

*/
